Video encoding may be employed to reduce an amount of data in a video. For example, video encoding may be used to transform a series of video frames of a video into an encoded video signal that carries substantially fewer bits than the original video frames while retaining much of the visual information contained in the original video frames.
Video encoding may include decomposing each video frame of a video into a set of sub-blocks, known as macro-blocks, encoding each macro-block, and sending each encoded macro-block in an encoded video signal along with a set of mode bits for each encoded macro-block that specify a prediction mode for the corresponding encoded macro-block. Prediction modes may include INTER modes for prediction among adjacent frames, e.g. motion estimation, and INTRA modes for predicting video content within individual video frames.
A video encoder may alter encoding complexity in response to a variety of encoding constraints. For example, a video encoder may alter encoding complexity by increasing or decreasing the number of prediction modes searched when encoding the macro-blocks of a video frame. When fewer modes are searched in the interest of complexity, the bit-rate typically increases for the same desired quality resulting in a loss of efficiency. Unfortunately, prior video encoding systems do not provide such mechanisms for adapting a video encoding signal to changes in encoding complexity and addressing the loss of efficiency.